Program Comprehension for Reverse Engineering
نویسنده
چکیده
INTRODUCTION: REVERSE ENGINEERING This paper motivates and describes a research program in the area of reverse engineering being conducted at the Georgia Institute of Technology. Reverse engineering is an emerging interest area within the software engineering eld. Software engineering itself is concerned with improving the productivity of the software development process and the quality of the systems it produces. However, as currently practiced, the majority of the software development eeort is spent on maintaining existing systems rather than developing new ones. Estimates of the proportion of resources and time devoted to maintenance range from 50% to 80%. Boehm, 1981] The greatest part of the software maintenance process is devoted to understanding the system being maintained. Fjeldstad and Hamlen report that 47% and 62% of time spent on actual enhancement and correction tasks, respectively, are devoted to comprehension activities. These involve reading the documentation , scanning the source code, and understanding the changes to be made. Fjeldstad and Hamlen, 1979] The implications are that if we want to improve software development, we should look at maintenance, and if we want to improve maintenance, we should facilitate the process of comprehending existing programs. Reverse engineering provides a direct attack on the program comprehension problem. Deenition The process of understanding a program involves reverse engineering the source code. Chikofsky and Cross Chikofsky and Cross II, 1990] give the following dee-nition. \Reverse enginering is the process of analyzing a subject system to identify the system's components and their interrelationships and create representations of the system in another form or at a higher level of abstraction." The purpose of reverse engineering is to understand a software system in order to facilitate enhancement, correction, documentation, redesign, or reprogramming in a diierent programming language. Diiculties Reverse engineering is diicult. It is diicult because it must bridge diierent worlds. Of particular importance are bridges over the following ve gaps. The gap between a problem from some application domain and a solution in some programming language. The gap between the concrete world of physical machines and computer programs and the abstract world of high level descriptions. The gap between the desired coherent and highly structured description of the system and the actual system whose structure may have disintegrated over time. The gap between the hierarchical world of programs and the associational nature of human cognition. The gap between the bottom-up analysis of the source code and the top-down synthesis …
منابع مشابه
Program Comprehension Risks and Opportunities in Extreme Programming
We investigate the relationship between reverse engineering and program comprehension on the one hand, and software process on the other. To understand this relationship, we select one particular existing software process, extreme programming (XP), and study the role played in it by program comprehension and reverse engineering. To that end, we analyze five key XP practices in depth: pair progr...
متن کاملA Survey of Reverse Engineering and Program Comprehension
Reverse engineering has been a standard practice in the hardware community for some time. It has only been within the last ten years that reverse engineering, or “program comprehension,” has grown into the current sub-discipline of software engineering. Traditional software engineering is primarily focused on the development and design of new software. However, most programmers work on software...
متن کاملTowards the Unified Visualization Architecture for Reverse Engineering
Program understanding, which is the acquisition of knowledge about a software system, is vital for all software engineering disciplines. One important aim of software engineering is hence the refinement of the program comprehension process to improve system maintenance effectively. Therefore, within this paper, our aim is to define an unified process for reverse engineering, including program a...
متن کاملTowards the Unified Recovery Architecture for Reverse Engineering
Program understanding, which is the acquisition of knowledge about a software system, is vital for all software engineering disciplines. One important aim of software engineering is hence the refinement of the program comprehension process to improve system maintenance effectively. Therefore, within this paper, our aim is to define a unified process for reverse engineering, including program an...
متن کاملAnalyzing xfig Using the Rigi Tool Suite
In connection with a workshop titled ’A Collective Demonstration of Program Comprehension Tools’ held during the CASCON conference in 1999, an experiment was conducted on how well expert users of program comprehension tools were able to perform specific program understanding and maintenance tasks on the xfig drawing program using these tools. This paper reports on the experiences of the users o...
متن کاملGraph Technology and Semantic Web in Reverse Engineering - A Comparison -
Reverse engineering tools are mostly based on analyzing code repositories. Various technological spaces for realizing these repositories including appropriate analysis techniques exist. Graph technology and semantic web based technologies provide elaborated and sufficient means to analyze software structures. This paper elaborates differences and similarities of both technological spaces by com...
متن کامل